// Decompiled by GOOSIN CO,LTD Copyright 2010 Pavel Kouznetsov.
// home page: http://www.Goosin.net
// Decompiler options: packimports(3) fieldsfirst ansi space 
// Source File Name:   pay_draft_ok.java

package draft.stock;

import include.get_rate_from_ID.getRateFromID;
import include.nseer_cookie.FileKind;
import include.nseer_db.nseer_db_backup1;
import java.io.IOException;
import java.sql.ResultSet;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.StringTokenizer;
import javax.servlet.ServletException;
import javax.servlet.http.*;
import javax.servlet.jsp.JspFactory;
import stock.getLength;
import validata.ValidataNumber;

public class pay_draft_ok extends HttpServlet
{

	public pay_draft_ok()
	{
	}

	public synchronized void service(HttpServletRequest request, HttpServletResponse response)
		throws IOException, ServletException
	{
		HttpSession dbSession = request.getSession();
		JspFactory _jspxFactory = JspFactory.getDefaultFactory();
		javax.servlet.jsp.PageContext pageContext = _jspxFactory.getPageContext(this, request, response, "", true, 8192, true);
		javax.servlet.ServletContext dbApplication = dbSession.getServletContext();
		HttpSession session = request.getSession();
		nseer_db_backup1 stock_db = new nseer_db_backup1(dbApplication);
		ValidataNumber validata = new ValidataNumber();
		getLength length = new getLength();
		getRateFromID getRateFromID = new getRateFromID();
		FileKind FileKind = new FileKind();
		try
		{
			if (stock_db.conn((String)dbSession.getAttribute("unit_db_name")))
			{
				String pay_ID = request.getParameter("pay_ID");
				String paying_time = request.getParameter("paying_time");
				String stock_name[] = request.getParameterValues("stock_name");
				String amount[] = request.getParameterValues("amount");
				Date now = new Date();
				SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
				String time = formatter.format(now);
				String register_time = request.getParameter("register_time");
				String reason = request.getParameter("reason");
				String reasonexact = request.getParameter("reasonexact");
				String id[] = request.getParameterValues("id");
				String product_ID[] = request.getParameterValues("product_ID");
				String product_name[] = request.getParameterValues("product_name");
				String cost_price[] = request.getParameterValues("cost_price");
				String demand_amount[] = request.getParameterValues("demand_amount");
				String paid_amount[] = request.getParameterValues("paid_amount");
				String paid_subtotal[] = request.getParameterValues("paid_subtotal");
				String stock_ID[] = request.getParameterValues("stock_ID");
				String nick_name[] = request.getParameterValues("nick_name");
				String details_number[] = request.getParameterValues("details_number");
				String available_amount[] = request.getParameterValues("available_amount");
				String serial_number_group[] = request.getParameterValues("serial_number_group");
				String amount_number_group[] = request.getParameterValues("amount_number_group");
				String stock_name_control = stock_name[0];
				String product_ID_control = product_ID[0];
				double amount_control = 0.0D;
				int p = 0;
				int lll = 0;
				for (int i = 0; i < stock_name.length; i++)
				{
					if (!amount[i].equals(""))
					{
						if (!validata.validata(amount[i]))
							p++;
					} else
					{
						amount[i] = "0";
					}
					int serial_number_tag = 0;
					String sql6 = (new StringBuilder("select * from stock_cell where product_ID='")).append(product_ID[i]).append("' and check_tag='1'").toString();
					ResultSet rs6 = stock_db.executeQuery(sql6);
					if (rs6.next())
						serial_number_tag = rs6.getInt("serial_number_tag");
					if (serial_number_tag == 1)
						lll = length.getLength((String)dbSession.getAttribute("unit_db_name"));
					else
						lll = length.getLength2((String)dbSession.getAttribute("unit_db_name"));
					if (serial_number_tag != 0 && Double.parseDouble(amount[i]) != 0.0D && serial_number_group[i].equals(""))
						p++;
					else
					if (serial_number_tag == 0 && Double.parseDouble(amount[i]) != 0.0D && !serial_number_group[i].equals(""))
						p++;
					if (!serial_number_group[i].equals(""))
					{
						String sql;
						for (StringTokenizer tokenTO = new StringTokenizer(serial_number_group[i], ", "); tokenTO.hasMoreTokens(); stock_db.executeUpdate(sql))
						{
							String serial_number_temp = tokenTO.nextToken();
							if (serial_number_temp.length() != lll)
								p++;
							String sql3 = (new StringBuilder("select * from stock_balance_details_details where serial_number='")).append(serial_number_temp).append("' and stock_ID='").append(stock_ID[i]).append("' and product_ID='").append(product_ID[i]).append("'").toString();
							ResultSet rs3 = stock_db.executeQuery(sql3);
							if (!rs3.next())
								p++;
							sql = (new StringBuilder("insert into stock_serial_number_temp(serial_number) values('")).append(serial_number_temp).append("')").toString();
						}

						String sql1 = "select distinct serial_number from stock_serial_number_temp";
						ResultSet rs1 = stock_db.executeQuery(sql1);
						rs1.last();
						if (serial_number_tag == 1 && (double)rs1.getRow() != Double.parseDouble(amount[i]))
							p++;
						String sql2 = "delete from stock_serial_number_temp";
						stock_db.executeUpdate(sql2);
					}
				}

				String sql88 = (new StringBuilder("select * from stock_paying_gathering where pay_ID='")).append(pay_ID).append("' and check_tag='0' and paying_time='").append(paying_time).append("' order by details_number").toString();
				ResultSet rs88 = stock_db.executeQuery(sql88);
				if (rs88.next())
				{
					if (p == 0)
					{
						int n = 0;
						double amount_sum = 0.0D;
						for (int i = 0; i < stock_name.length; i++)
						{
							if (!amount[i].equals(""))
							{
								amount_sum += Double.parseDouble(amount[i]);
								if (Double.parseDouble(amount[i]) > Double.parseDouble(available_amount[i]))
									n++;
								else
								if (Math.abs(Double.parseDouble(amount[i]) + Double.parseDouble(paid_amount[i])) > Math.abs(Double.parseDouble(demand_amount[i])))
									n++;
							}
							if (stock_name[i].equals(stock_name_control) && product_ID[i].equals(product_ID_control))
							{
								amount_control += Double.parseDouble(amount[i]);
								if (Math.abs(amount_control + Double.parseDouble(paid_amount[i])) > Math.abs(Double.parseDouble(demand_amount[i])))
									n++;
							} else
							{
								stock_name_control = stock_name[i];
								product_ID_control = product_ID[i];
								amount_control = 0.0D;
							}
						}

						if (n == 0)
						{
							double amount4 = 0.0D;
							double cost_price_sum = 0.0D;
							for (int i = 0; i < stock_name.length; i++)
							{
								int serial_number_tag = 0;
								String sql6 = (new StringBuilder("select * from stock_cell where product_ID='")).append(product_ID[i]).append("' and check_tag='1'").toString();
								ResultSet rs6 = stock_db.executeQuery(sql6);
								if (rs6.next())
									serial_number_tag = rs6.getInt("serial_number_tag");
								if (serial_number_tag == 1)
									lll = length.getLength((String)dbSession.getAttribute("unit_db_name"));
								else
									lll = length.getLength2((String)dbSession.getAttribute("unit_db_name"));
								if (!amount[i].equals("") && Double.parseDouble(amount[i]) != 0.0D)
								{
									String chain_id = "";
									String chain_name = "";
									String sql22 = (new StringBuilder("select * from stock_cell where product_ID='")).append(product_ID[i]).append("'").toString();
									ResultSet rs22 = stock_db.executeQuery(sql22);
									if (rs22.next())
									{
										chain_id = rs22.getString("chain_id");
										chain_name = rs22.getString("chain_name");
									}
									String address_group = "";
									String sql8 = (new StringBuilder("select * from stock_balance where product_ID='")).append(product_ID[i]).append("'").toString();
									ResultSet rs8 = stock_db.executeQuery(sql8);
									if (rs8.next())
										address_group = rs8.getString("address_group");
									String address = stock_name[i];
									if (address_group.indexOf(address) == -1)
										address_group = (new StringBuilder(String.valueOf(address_group))).append(address).append(",").toString();
									double subtotal = Double.parseDouble(cost_price[i]) * Double.parseDouble(amount[i]);
									amount4 += Double.parseDouble(amount[i]);
									cost_price_sum += subtotal;
									double balance_amount11 = getRateFromID.getRateFromID((String)dbSession.getAttribute("unit_db_name"), "stock_balance", "product_ID", product_ID[i], "amount") - Double.parseDouble(amount[i]);
									double amount22 = Double.parseDouble(amount[i]) + Double.parseDouble(paid_amount[i]);
									String sql4 = (new StringBuilder("update stock_paying_gathering set amount='")).append(amount[i]).append("',paid_amount='").append(paid_amount[i]).append("',balance_amount='").append(balance_amount11).append("',subtotal='").append(subtotal).append("',register_time='").append(register_time).append("',check_tag='0' where id='").append(id[i]).append("'").toString();
									stock_db.executeUpdate(sql4);
								} else
								{
									String sql25 = (new StringBuilder("delete from stock_paying_gathering where pay_ID='")).append(pay_ID).append("' and product_ID='").append(product_ID[i]).append("' and stock_ID='").append(stock_ID[i]).append("' and check_tag='0'").toString();
									stock_db.executeUpdate(sql25);
									String sql26 = (new StringBuilder("update stock_pre_paying set pay_check_tag='0' where pay_ID='")).append(pay_ID).append("' and product_ID='").append(product_ID[i]).append("' and stock_ID='").append(stock_ID[i]).append("'").toString();
									stock_db.executeUpdate(sql26);
								}
							}

							response.sendRedirect("draft/stock/pay_ok.jsp?finished_tag=1");
						} else
						{
							response.sendRedirect("draft/stock/pay_ok.jsp?finished_tag=2");
						}
					} else
					{
						response.sendRedirect("draft/stock/pay_ok.jsp?finished_tag=3");
					}
				} else
				{
					response.sendRedirect("draft/stock/pay_ok.jsp?finished_tag=8");
				}
				stock_db.commit();
				stock_db.close();
			} else
			{
				response.sendRedirect("error_conn.htm");
			}
		}
		catch (Exception ex)
		{
			ex.printStackTrace();
		}
	}
}
